﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESM.Objetos;
using System.Collections;

namespace ESMOffline
{
    public partial class frmEvaluacion : Form
    {

        #region Propiedades publicas y privadas

        ESMDataSet objESMDataSet = new ESMDataSet();
        private int _ieid;

        public int Ieid
        {
            get { return _ieid; }
            set { _ieid = value; }
        }

        private int _medid;

        public int Medid
        {
            get { return _medid; }
            set { _medid = value; }
        }

        Form _frmInicial = null;

        #endregion

        #region Eventos del Formulario
        public frmEvaluacion()
        {
            InitializeComponent();

        }

        public frmEvaluacion(Form frmInicial)
        {
            InitializeComponent();

            _frmInicial = frmInicial;

            this.FormClosed += new FormClosedEventHandler(frmEvaluacion_FormClosed);

        }

        void frmEvaluacion_FormClosed(object sender, FormClosedEventArgs e)
        {
            _frmInicial.Visible = true;
        }

        private void frmEvaluacion_Load(object sender, EventArgs e)
        {
            var ds_ee = objESMDataSet.dbo_Establecimiento_Educativo;
            ESMDataSetTableAdapters.dbo_Establecimiento_EducativoTableAdapter objdbo_Establecimiento_EducativoTableAdapter = new ESMDataSetTableAdapters.dbo_Establecimiento_EducativoTableAdapter();
            objdbo_Establecimiento_EducativoTableAdapter.Fill(ds_ee);

            gvSeleccionEE.AutoGenerateColumns = false;
            gvSeleccionEE.DataSource = ds_ee.Select("Estado = 1");
            gvSeleccionEE.Refresh();

        }

        private void gvSeleccionEE_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {

                if (e.ColumnIndex == -1)
                    MessageBox.Show("Identificador no encontrado.");
                else if (e.ColumnIndex == 0)
                {
                    _ieid = Convert.ToInt32(gvSeleccionEE.Rows[e.RowIndex].Cells[1].Value);

                    var ds_evaluacion = objESMDataSet.dbo_Evaluacion;
                    var ds_lecturacontexto = objESMDataSet.dbo_LecturaContextoEE;

                    ESMDataSetTableAdapters.dbo_LecturaContextoEETableAdapter objdbo_Mediciones_lc_TableAdapter = new ESMDataSetTableAdapters.dbo_LecturaContextoEETableAdapter();
                    objdbo_Mediciones_lc_TableAdapter.Fill(ds_lecturacontexto);

                    ESMDataSetTableAdapters.dbo_EvaluacionTableAdapter objdbo_MedicionesTableAdapter = new ESMDataSetTableAdapters.dbo_EvaluacionTableAdapter();
                    objdbo_MedicionesTableAdapter.Fill(ds_evaluacion);

                    IEnumerable med_1 = null;

                    var med_2 = (from m in ds_evaluacion
                                 join lcm in ds_lecturacontexto on m.IdIE equals lcm.IdIE
                                 where m.IdIE == _ieid || lcm.IdIE == _ieid
                                 select new { Med_Eval = m.IdMedicion, Med_Lectura = lcm.IdMedicion }).Distinct();

                    DataTable objTable = null;

                    if (med_2.Count() == 0)
                    {
                        med_1 = (from m in ds_evaluacion
                                 where m.IdIE == _ieid
                                 select new { Med_Eval = m.IdMedicion }).Distinct();

                        objTable = Application_ESM.ConvertToDataTable(med_1);
                    }
                    else
                        objTable = Application_ESM.ConvertToDataTable(med_2);

                    //DataTable objTable = ds_evaluacion.Select("IdIE =" + _ieid).CopyToDataTable();


                    DataView objDataView = new DataView(objTable);
                    DataTable objDataTable = objDataView.ToTable(true, "Med_Eval");

                    gvMediciones.DataSource = objTable;
                    gvMediciones.Refresh();
                }


            }
            catch (Exception)
            {
                MessageBox.Show("No se encontraron mediciones para el \n establecimiento educativo seleccionado.", "ESM Información");
                new frmCrearMedicion(_ieid, "EE", this).ShowDialog();
            }
        }

        private void gvMediciones_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == -1)
                MessageBox.Show("Identificador no encontrado.");

            else if (e.ColumnIndex == 0)
            {
                _medid = Convert.ToInt32(gvMediciones.Rows[e.RowIndex].Cells[2].Value);

                new frmPreguntas(Ieid, Medid).Show();
            }
            else if (e.ColumnIndex == 1)
            {
                try
                {

                    _medid = Convert.ToInt32(gvMediciones.Rows[e.RowIndex].Cells[3].Value);

                    new frmLecturaContextoEE(Ieid, Medid).Show();

                }
                catch (Exception)
                {
                    MessageBox.Show("Es posible que el instrumento asignado no se haya aplicado hasta la fecha", "Información ESM", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

        }
        #endregion
    }
}
